/*
  reducer 是可以初始化状态和处理状态

  该文件只用于创建一个为Count组件服务的reducer，reducer的本质就是一个函数  reducer会有很多 所以命名上就要规范起来 入 count_reducer
  
  reducer函数会接收两个参数 分别是
    1. 之前的状态
    2. 动作对象action
*/

import { INCREMENT, DECREMENT } from './constant'

function countReducer(preState, action) {
	if (!preState) {
		// 初始化的时候是页面一加载 react就会帮我们调用的  并且 preState 是一个undefined
		preState = 0
	}

	// 从action中获取 type、data
	const { type, data } = action

	// 根据type决定如何加工数据
	switch (type) {
		case INCREMENT:
			return preState + data
		case DECREMENT:
			return preState - data
		default:
			return preState
	}
}

export default countReducer
